package com.atde._05_behavioral_design_patterns.template;


/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._05_behavioral_design_patterns.template
 * @Author: Del
 * @CreateTime: 2025-06-25  09:36
 * @Description: 模版方法 --- 豆浆抽象类
 * @Version: 1.0
 */
public abstract class SoyaMilk {

    // 模版方法，make，属于模版方法可以使用final进行修饰
    // 不让子类覆盖
    final void make() {
        select();
        addCondiments();
        soak();
        beat();
    }

    // 选材料
    void select() {
        System.out.println("第一步：选择好的新鲜的黄豆");
    }

    // 添加不同配料，抽象方法，由子类具体实现
    abstract void addCondiments();

    void soak() {
        System.out.println("第三步：黄豆和配料开始浸泡，需要3小时");
    }

    void beat() {
        System.out.println("第四步：黄豆和配料放到豆浆机去打碎");
    }
}
